#include <iostream>
#include <vector>

class Test {
public:
    Test(int, int) { std::cout << "Test(int, int)" << std::endl; }
    Test(const Test&) { std::cout << "Test(const Test&)" << std::endl; }
    Test(Test&&) { std::cout << "Test(Test&&)" << std::endl; }
};

int main() {
    std::vector<Test> vt;
    vt.reserve(10);

    Test t(1, 2);
    vt.emplace_back(t);
    vt.push_back(t);

    std::cout << "=================" << std::endl;

    vt.emplace_back(Test(2, 3));
    vt.push_back(Test(3, 4));

    std::cout << "=================" << std::endl;

    vt.emplace_back(4, 5);
    std::cout << "<<<<<" << std::endl;
    vt.push_back({5, 6});

    return 0;
}